[Ajuda] Matriz com ponteiros 2 [RESOLVIDO]

1. [Ajuda] Matriz com ponteiros 2 [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 24/12/2010 - 01:16h

Gostaria de saber como eu calculo os elementos da diagonal secundária da matriz n qualquer definida pelo usuário

Estou tentando fazer assim:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

float produto_diagonal_secundaria( float **, int ); /*protótipo da função*/

int main(void)
{

int i = 0;
int j = 0;
float **mat; /** Um ponteiro para x e outro para y **/
int n = 0;

printf( "\nDigite o tamanho da matriz: " );
scanf( "%d", &n );

mat = malloc( sizeof(float *) * n );

for( i = 0; i < n; i++ )
mat[i] = malloc( sizeof(float) * n );

printf( "\n\nO produto dos elementos da diagonal principal da matriz é: %f ", produto_diagonal_secundaria(mat, n) );

for( i = 0; i < n; i++ )
free( mat[i] );

free( mat );

return 0;
}

/*Programa principal*/
float produto_diagonal_secundaria( float **mat, int n )
{

float produto_diagonal_secundaria = 1; //inicializa o produto da diagonal principal com 1
int i, j;

for( i = 0; i < n; i++ )
{
for( j = 0; j < n; j++ )
{
printf( "Digite os valores da matriz: " );
scanf( "%f", &mat[i][j] );

//verifica a diagonal secundaria
if (j==n-i)
produto_diagonal_secundaria = produto_diagonal_secundaria * mat[i][j];

}
}
//monta a matriz
for( i = 0; i < n; i++ )
{
for( j = 0; j < n; j++ )
{
printf( "%0.f ", mat[i][j] );
}
printf( "\n" );
}

printf("O valor da multiplicacao da diagonal principal eh %0.f", produto_diagonal_secundaria);

getche();
}

o resultado obtido sempre e o valor n digitado pelo usuário como fazer para calcular apenas os valores da diagonal secundária.


  


2. MELHOR RESPOSTA

Ezequias Rocha
Ezequias Rocha

(usa Ubuntu)

Enviado em 27/12/2010 - 07:47h

Não chequei se a matriz está sendo montada corretamente (veja isto por favor, comparando a matriz impressa com a inserida), todavia, pode-se calcular o produto dos elementos da diagonal secundária da seguinte maneira:

int h = 0, k = n-1;
for(; h<n; h++, k--)//h:linha, k:coluna, pressuposto matriz n por n
produto_diagonal_secundaria *= mat[h][k];


Embraces!

3. Re: [Ajuda] Matriz com ponteiros 2 [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 28/12/2010 - 19:17h

Obrigado pela ajuda

Segue o código completo

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

float produto_diagonal_secundaria( float **, int ); /*protótipo da função*/

int main(void)
{

int i = 0;
int j = 0;
float **mat;
int n = 0;

printf( "\nDigite o tamanho da matriz: " );
scanf( "%d", &n );

mat = malloc( sizeof(float *) * n );

for( i = 0; i < n; i++ )
mat[i] = malloc( sizeof(float) * n );

for( i = 0; i < n; i++ )
free( mat[i] );

free( mat );

return 0;
}


float produto_diagonal_secundaria( float **mat, int n )
{

float produto_diagonal_secundaria = 1;
int i, j;

//processar matriz
for( i = 0; i < n; i++ )
{
for( j = 0; j < n; j++ )
{
printf( "Digite os valores da matriz: " );
scanf( "%f", &mat[i][j] );
}
}

int s = 0, p = n-1;
for(; s<n; s++, p--)
produto_diagonal_secundaria *= mat[s][p];

//monta a matriz
for( i = 0; i < n; i++ )
{
for( j = 0; j < n; j++ )
{
printf( "%0.f ", mat[i][j] );
}
printf( "\n" );
}

printf("O valor da multiplicacao da diagonal secundaria eh %0.f", produto_diagonal_secundaria);
getche();

}






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts